/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is Forte for Java, Community Edition. The Initial * Developer of the Original Code is Sun Microsystems, Inc. Portions * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved. */ package org.openide.text; import javax.swing.text.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.event.UndoableEditListener; // Document implementation /** Document that delegates all functionality to given document. * Useful if a subclass wants to modify a behaviour of a document. * <p>{@link StyledDocument} methods are just defaulted to the plainest behavior. * * @author Jaroslav Tulach */ public class FilterDocument extends Object implements StyledDocument { /** the original document to delegate to */ protected Document original; /** Create new document instance. * @param original delegated-to document */ public FilterDocument(Document original) { this.original = original; } /* Length of document. * @return number of characters >= 0 */ public int getLength () { return original.getLength (); } /* Add listener for changes in document */ public void addDocumentListener(DocumentListener l) { original.addDocumentListener (l); } /* Remove listener for chagnes in document */ public void removeDocumentListener(DocumentListener l) { original.removeDocumentListener (l); } /* Add listener for undoable edit actions over document */ public void addUndoableEditListener(UndoableEditListener listener) { original.addUndoableEditListener (listener); } /* Remove listener for undoable edit actions */ public void removeUndoableEditListener(UndoableEditListener listener) { original.removeUndoableEditListener (listener); } /* Gets document property by key */ public Object getProperty(Object key) { return original.getProperty (key); } /* Puts new property of document */ public void putProperty(Object key, Object value) { original.putProperty (key, value); } /* Removes portion of a document */ public void remove(int offset, int len) throws BadLocationException { original.remove (offset, len); } /* Inserts string into document */ public void insertString(int offset, String str, AttributeSet a) throws BadLocationException { original.insertString (offset, str, a); } /* Get text at given offset in document as string */ public String getText(int offset, int len) throws BadLocationException { return original.getText (offset, len); } /* Get text at given offset in document as segment */ public void getText(int offset, int len, Segment txt) throws BadLocationException { original.getText (offset, len, txt); } /* Get the start non-movable position in the document */ public Position getStartPosition () { return original.getStartPosition (); } /* Get end document position */ public Position getEndPosition() { return original.getEndPosition (); } /* Create position in document */ public Position createPosition(int offset) throws BadLocationException { return original.createPosition (offset); } /* Return array of root elements - usually only one */ public Element[] getRootElements() { return original.getRootElements (); } /* Return default root element */ public Element getDefaultRootElement() { return original.getDefaultRootElement (); } /* Rendering on document as reader. Renderer must not make * any mutations. */ public void render(Runnable r) { original.render (r); } // // StyledDocument methods // /* * Adds a new style into the logical style hierarchy. Style attributes * resolve from bottom up so an attribute specified in a child * will override an attribute specified in the parent. * * @param nm the name of the style (must be unique within the * collection of named styles). The name may be null if the style * is unnamed, but the caller is responsible * for managing the reference returned as an unnamed style can't * be fetched by name. An unnamed style may be useful for things * like character attribute overrides such as found in a style * run. * @param parent the parent style. This may be null if unspecified * attributes need not be resolved in some other style. * @return the style */ public Style addStyle(String nm, Style parent) { return null; } /* * Removes a named style previously added to the document. * * @param nm the name of the style to remove */ public void removeStyle(String nm) { } /* * Fetches a named style previously added. * * @param nm the name of the style * @return the style */ public Style getStyle(String nm) { return null; } /* * Changes the content element attributes used for the given range of * existing content in the document. All of the attributes * defined in the given Attributes argument are applied to the * given range. This method can be used to completely remove * all content level attributes for the given range by * giving an Attributes argument that has no attributes defined * and setting replace to true. * * @param offset the start of the change >= 0 * @param length the length of the change >= 0 * @param s the non-null attributes to change to. Any attributes * defined will be applied to the text for the given range. * @param replace indicates whether or not the previous * attributes should be cleared before the new attributes * as set. If true, the operation will replace the * previous attributes entirely. If false, the new * attributes will be merged with the previous attributes. */ public void setCharacterAttributes(int offset, int length, AttributeSet s, boolean replace) { } /* * Sets paragraph attributes. * * @param offset the start of the change >= 0 * @param length the length of the change >= 0 * @param s the non-null attributes to change to. Any attributes * defined will be applied to the text for the given range. * @param replace indicates whether or not the previous * attributes should be cleared before the new attributes * are set. If true, the operation will replace the * previous attributes entirely. If false, the new * attributes will be merged with the previous attributes. */ public void setParagraphAttributes(int offset, int length, AttributeSet s, boolean replace) { } /* * Sets the logical style to use for the paragraph at the * given position. If attributes aren't explicitly set * for character and paragraph attributes they will resolve * through the logical style assigned to the paragraph, which * in turn may resolve through some hierarchy completely * independent of the element hierarchy in the document. * * @param pos the starting position >= 0 * @param s the style to set */ public void setLogicalStyle(int pos, Style s) { } /* * Gets a logical style for a given position in a paragraph. * * @param p the position >= 0 * @return the style */ public Style getLogicalStyle(int p) { return null; } /* * Gets the element that represents the paragraph that * encloses the given offset within the document. * * @param pos the offset >= 0 * @return the element */ public Element getParagraphElement (int pos) { return getLeafElement (); } /* * Gets the element that represents the character that * is at the given offset within the document. * * @param pos the offset >= 0 * @return the element */ public Element getCharacterElement(int pos) { return getLeafElement (); } /* * Takes a set of attributes and turn it into a foreground color * specification. This might be used to specify things * like brighter, more hue, etc. * * @param attr the set of attributes * @return the color */ public java.awt.Color getForeground(AttributeSet attr) { return java.awt.Color.black; } /* * Takes a set of attributes and turn it into a background color * specification. This might be used to specify things * like brighter, more hue, etc. * * @param attr the set of attributes * @return the color */ public java.awt.Color getBackground(AttributeSet attr) { return java.awt.Color.white; } /* * Takes a set of attributes and turn it into a font * specification. This can be used to turn things like * family, style, size, etc into a font that is available * on the system the document is currently being used on. * * @param attr the set of attributes * @return the font */ public java.awt.Font getFont(AttributeSet attr) { return null; } /** default leaf element */ private static Element leaf; /** Lazy initialization of leaf element. */ private static Element getLeafElement () { if (leaf != null) return leaf; AbstractDocument doc = new javax.swing.text.html.HTMLDocument (); return leaf = doc.new LeafElement (null, null, 0, 0); } } /* * Log * 5 Gandalf 1.4 10/22/99 Ian Formanek NO SEMANTIC CHANGE - Sun * Microsystems Copyright in File Comment * 4 Gandalf 1.3 6/8/99 Ian Formanek ---- Package Change To * org.openide ---- * 3 Gandalf 1.2 2/10/99 Jesse Glick [JavaDoc] * 2 Gandalf 1.1 2/5/99 Jaroslav Tulach * 1 Gandalf 1.0 1/5/99 Ian Formanek * $ */